/*
 变量和常量都有数据类型，类型描述了数据的本质，并为编译器提供数据处理方式的信息。根据常量或者变量的类型，编译器知道该保留多少内存，并且能够对其进行类型检查，防止赋值时类型不匹配。。
 */
import Cocoa

//1.创建一个字符串变量
var numberOfStopLights = "Four"
/*
 “” Four是字符串字面量
 swift根据右侧的类型推断出 变量numberOfStopLights的类型。
 */

//2. 给变量numberOfStopLights加上整数2
numberOfStopLights+=2
/*
 编译器报错“Binary operator '+=' cannot be applied to operands of type 'String' and 'Int'”
 意思是说，你这个+=操作符不能这么用，把不同类型的数据相加是不允许的。
 */

/*
 分析：
 错误直接的原因是因为使用+=不得当，而根本原因是因为numberOfStopLights不应该是字符串类型。它明显应该是一个   整数
 */

//改动
var numberOfStopLightsNew = 4
numberOfStopLightsNew += 2

//另外一种写法
var numberOfStopLightsNew2:Int = 4
numberOfStopLightsNew2 += 2

/*
 上述通过类型推断，或者显示声明的方式，将变量类型定为整型。
 那么？
 var numberOfStopLightsNew3: Int = "Four"
 对么？
 */
var numberOfStopLightsNew3: Int = "Four"



//3.常量与变量
/*
 类型描述的是常量 或 变量所持有数据的本质，那么，什么是常量，什么又是变量呢？顾明思意，常量的值不能改变，变量的值可以改变。
 如：
 var numberOfStopLightsNew = 4
 numberOfStopLightsNew += 2
 那么，什么时候用常量，什么时候用变量呢？
 对必须变化的实例用变量，其他都用常量。
 那么，如何声明常量呢？
 */
let numberOfStopLightsConstant: Int = 4
numberOfStopLightsConstant += 2


//4.声明一个人口变量，然后给变量赋值
var population:Int
population = 3333


//5.字符串插值（拼接字符串）
let townDesInfo = "There has a population of\(population) and \(numberOfStopLightsConstant) stopLights."
print(townDesInfo)
/*
 字符串字面量中的
 /()语法表示占位符。
 */


//练习，再增加一个变量，拼接到townDesInfo中
